/*
封装 Axios 作为全局的网络请求对象
提供一些公共配置
 */
//1.创建axios实例 是单例全局
import axios from "axios";
import {ElMessage} from "element-plus";
import router from "@/router/index.js";


const http = axios.create({
    //1.1公共前缀
    baseURL: import.meta.env.VITE_API_URL,
    //1.2请求超时时间
    timeout: 10000
});

//2.请求拦截器与响应拦截器
http.interceptors.request.use(config => {
    let token = sessionStorage.getItem("token");
    if (token) {
        // 🟡 可以保留原来的 token 头（兼容旧接口）
        config.headers["token"] = token;
    }
    return config
})

//2.响应拦截器
http.interceptors.response.use(response => {
    if (response.data.code === 401) {
        //1.1删除失效的token
        sessionStorage.removeItem("token");
        //1.2跳转到登录页面，提示请登录
        ElMessage.error("请先登录");
        //1.3跳转登录页面
        router.push({name: 'login'}).catch(err => {
            console.log(err);
        })
    }
    return response.data;
})

export default http;